浅谈务实的游戏程序员该如何做优化
近期面试了一些后端程序,问了些优化方面的问题,我发现很多人都答不好这个问题。
先来定义一下,什么样的程序员能称之为务实。对于游戏项目来说,进度是至关重要的一个因素,所以一个务实的程序员,应当能快速解决遇到的问题,快速交付稳定的代码,而可具备一定可以维护性,以应对策划多变的需求。
举个例子,在面试中有个候选人跟我说,他做过一个背包的优化,就是原本是的结构是字典的形式,如{name:”道具1”, lv:1, num:99},为了节省空间,他把这个结构改成数组的形式:[“道具1”, 1, 99],以此减少了冗余的key。然后在外面再封装了api去访问字典的字段。
问题来了,这样的优化真的有必要吗。可能这个优化,对于背包这个系统确实减少了一半的内存。但是,我们需要考虑一个问题是,这个背包系统,在整个玩家数据里,真能占那么大比例吗。假如,背包的数据只占到总内存的2%,那这个优化做完了之后,变成1%,从整体来看,只让内存占用下降了1%,却带来了代码维护上的困难,以及拖慢的项目的进度,这是得不偿失的一件事。
以下是我关于优化的一些观点:
1.在游戏的研发阶段,优化是优先级最低的,我们不应该主动去做优化,开发效率和可维护性是高于优化的,除非某一个功能遇到了瓶颈。
2.我们需要了解客户端和服务器的瓶颈分别是什么: